#ifndef __SAGITTARIUS_PLATFORM_WIN_H_
#define __SAGITTARIUS_PLATFORM_WIN_H_

//constants that hold the correspond to various windows versions
//see http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx (if it survives MS's constant reorganizing)
#define SAGITTARIUS_WINVER_WIN7     5 //Windows 7
#define SAGITTARIUS_WINVER_WINS2008 4 //Windows Server 2008
#define SAGITTARIUS_WINVER_WINVISTA 3 //Windows Vista
#define SAGITTARIUS_WINVER_WINS2003 2 //Windows Server 2003
#define SAGITTARIUS_WINVER_WINXP    1 //Windows XP
#define SAGITTARIUS_WINVER_WIN2000  0 //Windows 2000

//service packs
#define SAGITTARIUS_WINSP_NOSP 0
#define SAGITTARIUS_WINSP_SP1  1
#define SAGITTARIUS_WINSP_SP2  2
#define SAGITTARIUS_WINSP_SP3  3

#if NTDDI_VERSION == NTDDI_WIN7 //Windows 7
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WIN7
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_NOSP
#elif NTDDI_VERSION == NTDDI_WS08 //Windows Server 2008
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINS2008
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_NOSP
#elif NTDDI_VERSION == NTDDI_VISTASP1 //Windows Vista SP1
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINVISTA
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_SP1
#elif NTDDI_VERSION == NTDDI_VISTA //Windows Vista
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINVISTA
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_NOSP
#elif NTDDI_VERSION == NTDDI_WS03SP2 //Server 2003 SP2
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINS2003
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_SP2
#elif NTDDI_VERSION == NTDDI_WS03SP1 //Server 2003 SP1
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINS2003
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_SP1
#elif NTDDI_VERSION == NTDDI_WS03 //Server 2003
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINS2003
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_NOSP
#elif NTDDI_VERSION == NTDDI_WINXPSP3 //XP SP3
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINXP
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_SP3
#elif NTDDI_VERSION == NTDDI_WINXPSP2 //XP SP2
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINXP
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_SP2
#elif NTDDI_VERSION == NTDDI_WINXPSP1 //XP SP1
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINXP
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_SP1
#elif NTDDI_VERSION == NTDDI_WINXP //XP
    #define SAGITTARIUS_WINVER SAGITTARIUS_WINVER_WINXP
    #define SAGITTARIUS_WINSP SAGITTARIUS_WINSP_NOSP
#elif NTDDI_VERSION < NTDDI_WINXP
    #error "Windows is older than minimum supported version"
#endif


#define SAGITTARIUS_WIN_MINVER _WIN32_WINNT

#define SAGITTARIUS_WIN_MINVER_WIN7     _WIN32_WINNT_WIN7 //Windows 7
#define SAGITTARIUS_WIN_MINVER_WINS2008 _WIN32_WINNT_WS08
#define SAGITTARIUS_WIN_MINVER_WINVISTA _WIN32_WINNT_VISTA
#define SAGITTARIUS_WIN_MINVER_WIN03    _WIN32_WINNT_WS03 //Server 2003 with SP1 *OR* XP with SP2
#define SAGITTARIUS_WIN_MINVER_WINXP    _WIN32_WINNT_WINXP
#define SAGITTARIUS_WIN_MINVER_WIN2000  _WIN32_WINNT_WIN2K

#endif
